package com.ztrue.framework.core.event;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * 表示一种事件序列化方式
 *
 * @author zhangw
 * @date 2016/10/27 16:20
 * @version: 1.0
 */
public interface IEventSerializer {
    /**
     * 序列化集合
     * @param events
     * @return
     */
    Map<String, String> serialize(Iterator<IDomainEvent> events);

    /**
     * 序列化集合
     * @param events
     * @return
     */
    Map<String, String> serialize(Collection<IDomainEvent> events);

    /**
     * 反序列化集合
     * @param data
     * @return
     */
    List<IDomainEvent> deserialize(Map<String, String> data);

    /**
     * 反序列化单个领域事件
     * @param typeName
     * @param data
     * @return
     */
    IDomainEvent deserialize(String typeName, String data);
}
